1. Field of the invention
The present invention pertains to computer systems and computer system buses. More particularly, this invention relates to changing of data transfer widths over a bus in a computer system.
2. Background
Modern computer systems typically have multiple agents coupled together via a system bus. Typically, the agents are integrated circuit chips with multiple pins coupling each agent to the bus. These agents may include, for example, processors, memory devices, mass storage devices, etc. In order for the computer system to operate properly, these agents should be able to effectively communicate with each other via the bus.
The bus includes multiple data lines, each of which is capable of transferring one bit of data. The number of clock cycles that a bit of data is required to be on the data line in order to be received by another agent is dependent on the bus protocol, but typically ranges from one to a few clock cycles. The total number of data lines in a bus is referred to as the data bus width.
A wide variety of agents for use in computer systems are commonly available. These different agents have a varying number of data pins which are used to connect the agents to the bus. The number of such data pins used by a particular agent is referred to as the data width supported by that agent. There are numerous reasons for using different data widths. For example, some agents may not need to operate internally with as wide a data path as the bus supports. By way of another example, some agents may want to conserve cost, pin count, and/or chip size. Situations can arise where it would be beneficial to place multiple agents on a bus, each of which connects to the bus using a different data width. Therefore, it would be beneficial to provide a mechanism to allow multiple agents to reside on the same bus and communicate effectively with one another despite their supporting different data widths.
One solution would be to limit all data transfers on the bus to the smallest maximum data width supported by any agent coupled to the bus. For example, if four agents were coupled to the bus, three of which support up to 64-bit transfers and one of which supports only up to 32-bit transfers, then all data transfers on the bus would be limited to 32 bits. However, this solution results in inefficient data transfers between agents capable of supporting 64-bit transactions. Therefore, it would be beneficial to provide dynamic support for different data widths on a transaction by transaction basis, accounting for the data widths supported by the agents in each transaction. Doing so allows two or more agents involved in a transaction to transfer data at the maximum width supported by those agents, rather than limiting the transaction to the smaller data size of another agent on the bus which is not involved in this transaction.
As will be described in more detail below, the present invention provides a method and apparatus for changing data transfer widths in a computer system to achieve these and other desired results which will be apparent to those skilled in the art from the description that follows.